<?php

namespace App\Http\Controllers\SystemManagement;

use App\Models\SystemManagement\CustomTable;
use Illuminate\Database\QueryException;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

/**
 * @group 表格表头自定义类
 *
 * 采用 restful api
 *
 * Body Parameters 表示请求的所需要的参数
 *
 * Query Parameters 表示返回参数的名称
 */

class CustomTableController extends Controller
{
    /**
     * 表格表头信息查看列表
     *
     * @queryParam  name string 表格名称
     * @queryParam  formdata text 表格表头数据
     * @queryParam  creator string 创建人
     *
     * @return \Illuminate\Http\Response
     *
     */
    public function index(Request $request)
    {
        $customTable = new CustomTable();
        $data = $customTable->getList($request);
        return response()->json(encodeMsg($data,200));
    }

    /**
     * 添加表格表头信息
     *
     * @bodyParam  name string 表格名称
     * @bodyParam  formdata text 表格表头数据
     * @bodyParam  creator string 创建人
     *
     * @queryParam  name string 表格名称
     * @queryParam  formdata text 表格表头数据
     * @queryParam  creator string 创建人
     *
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        try {
            $data = CustomTable::create($request->all());
            return response()->json(encodeMsg($data,201));
        } catch (QueryException $e) {
            // dd($e);
            return response()->json(encodeMsg(['message' => '表格表头信息添加失败!'],400));
        }
    }

    /**
     * 查看表格表头信息
     *
     * @bodyParam id int required  表格表头信息ID
     *
     * @queryParam  name string 表格名称
     * @queryParam  formdata text 表格表头数据
     * @queryParam  creator string 创建人
     *
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $data = CustomTable::find($id);
        if($data == []) {
            return response()->json(encodeMsg(["message" => "没有该表格表头信息!"], 404));
        } else {
            return response()->json(encodeMsg($data,200));
        }
    }

    /**
     * 修改表格表头信息
     *
     * @bodyParam id int required  表格表头信息ID
     *
     * @queryParam  name string 表格名称
     * @queryParam  formdata text 表格表头数据
     * @queryParam  creator string 创建人
     *
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $customTable = CustomTable::find($id);
        if($customTable == []) {
            return response()->json(encodeMsg(["message" => "没有该表格表头信息!"], 404));
        }
        try {
            $customTable->update($request->all());
            return response()->json(encodeMsg($customTable,200));
        } catch (QueryException $e) {
            return response()->json(encodeMsg(['message' => '表格表头信息修改失败!'],400));
        }
    }

    /**
     * 删除表格表头信息
     *
     * @bodyParam id int required  表格表头信息ID
     * @response 204 {
     *   "message": "表格表头信息删除成功"
     * }
     *
     * @response 404 {
     *  "message": "没有该表格表头信息"
     * }
     *
     *
     */
    public function destroy($id)
    {
        $customTable = CustomTable::find($id);
        if($customTable == []) {
            return response()->json(encodeMsg(["message" => "没有该表格表头信息!"], 404));
        }
        if($customTable->delete()) {
            return response()->json(encodeMsg(["message" => "表格表头信息删除成功"], 204));
        } else {
            return response()->json(encodeMsg(["message" => "表格表头信息删除失败"], 400));
        }
    }

    /**
     * 表格表头信息批量删除
     *
     * @bodyParam  ids int required  id集合字符串[格式：ids=1,2,3]
     * @response 204 {
     *   "message": "表格表头信息删除成功"
     * }
     *
     *
     */
    public function delete($ids)
    {
        $listId = explode(',', $ids);
        CustomTable::whereIn('id',$listId)->delete();
        return response()->json(encodeMsg(["message" => "表格表头信息删除成功"], 204));
    }
}
